<?php
/**
 * Clase Base DP para BaseImAlmacenDP
 *
 * @package    
 * @subpackage BaseImAlmacenDP
 * @author     hans
 * @version    SVN:: BaseImAlmacenDP.class.php,v 1.1 2012-03-18 20:28:48 Hans.parra Exp $
 */

require_once('class/common/arrayClass.class.php');
require_once('class/im/alm/BN/ImAlmacenBN.class.php');


abstract class BaseImAlmacenDP extends ImAlmacenBN
{
  /* N�mero de registros afectados */
  private $nRowsAffected;

  public function __construct($bSetDefault = true)
  {
    if( $bSetDefault instanceof ImAlmacenBN )
    {
      $o_ImAlmacenBN = $bSetDefault;
      if($o_ImAlmacenBN->getAlmacenId()) : $this->setAlmacenId($o_ImAlmacenBN->getAlmacenId()); endif;
      if($o_ImAlmacenBN->getNombre()) : $this->setalm_nombre($o_ImAlmacenBN->getNombre()); endif;
      if($o_ImAlmacenBN->getAlmacenRefId()) : $this->setAlmacenRefId($o_ImAlmacenBN->getAlmacenRefId()); endif;
      if($o_ImAlmacenBN->getDirecc1()) : $this->setDirecc1($o_ImAlmacenBN->getDirecc1()); endif;
      if($o_ImAlmacenBN->getDirecc2()) : $this->setDirecc2($o_ImAlmacenBN->getDirecc2()); endif;
      if($o_ImAlmacenBN->getCiudad()) : $this->setCiudad($o_ImAlmacenBN->getCiudad()); endif;
      if($o_ImAlmacenBN->getAlmEstado()) : $this->setAlmEstado($o_ImAlmacenBN->getAlmEstado()); endif;
      if($o_ImAlmacenBN->getParaVentaSw()) : $this->setParaVentaSw($o_ImAlmacenBN->getParaVentaSw()); endif;
      if($o_ImAlmacenBN->getParaCompraSw()) : $this->setParaCompraSw($o_ImAlmacenBN->getParaCompraSw()); endif;
      if($o_ImAlmacenBN->getEstado()) : $this->setEstado($o_ImAlmacenBN->getEstado()); endif;
      if($o_ImAlmacenBN->getCreaUsr()) : $this->setCreaUsr($o_ImAlmacenBN->getCreaUsr()); endif;
      if($o_ImAlmacenBN->getCreaFecha()) : $this->setCreaFecha($o_ImAlmacenBN->getCreaFecha()); endif;
      if($o_ImAlmacenBN->getModifUsr()) : $this->setModifUsr($o_ImAlmacenBN->getModifUsr()); endif;
      if($o_ImAlmacenBN->getModifFecha()) : $this->setModifFecha($o_ImAlmacenBN->getModifFecha()); endif;
    }
  }

  /* Obtiene el n�mero de registros afectados */
  public function getRowsAffected()
  {
    return $this->nRowsAffected;
  }

  public function save()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT IF(MAX(alm_almacenId),(MAX(alm_almacenId)+1), 1) AS Maximo FROM im_almacen;";
      $result = mysql_query($sql);
      $row = mysql_fetch_array($result);
      $this->setAlmacenId($row[0]);

      if($this->getAlmacenId()){
        $a_Fields = array();

        if($this->getAlmacenId()) : $a_Fields['alm_almacenId'] = ($this->getAlmacenId()); endif;
        if($this->getNombre()) : $a_Fields['alm_nombre'] = ($this->getNombre()); endif;
        if($this->getAlmacenRefId()) : $a_Fields['alm_almacenRefId'] = ($this->getAlmacenRefId()); endif;
        if($this->getDirecc1()) : $a_Fields['alm_direcc1'] = ($this->getDirecc1()); endif;
        if($this->getDirecc2()) : $a_Fields['alm_direcc2'] = ($this->getDirecc2()); endif;
        if($this->getCiudad()) : $a_Fields['alm_ciudad'] = ($this->getCiudad()); endif;
        if($this->getAlmEstado()) : $a_Fields['alm_almEstado'] = ($this->getAlmEstado()); endif;
        if($this->getParaVentaSw()) : $a_Fields['alm_venta'] = ($this->getParaVentaSw()); endif;
        if($this->getParaCompraSw()) : $a_Fields['alm_compra'] = ($this->getParaCompraSw()); endif;
        if($this->getEstado()) : $a_Fields['alm_estado'] = ($this->getEstado()); endif;
        if($this->getCreaUsr()) : $a_Fields['alm_creaUsr'] = ($this->getCreaUsr()); endif;
        if($this->getCreaFecha()) : $a_Fields['alm_creaFecha'] = ($this->getCreaFecha()); endif;
        if($this->getModifUsr()) : $a_Fields['alm_modifUsr'] = ($this->getModifUsr()); endif;
        if($this->getModifFecha()) : $a_Fields['alm_modifFecha'] = ($this->getModifFecha()); endif;

        $sStringField = arrayClass::implode_keys(',', $a_Fields);
        $sStringValue = "'".implode("','", $a_Fields)."'";

        $sql = "INSERT INTO im_almacen (".$sStringField.") VALUES (".$sStringValue.");";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function update()
  {
    try
    {
      if($this->getAlmacenId())
      {
        $a_Fields = array();

        if($this->getAlmacenId()) : $a_Fields['alm_almacenId'] = ($this->getAlmacenId()); endif;
        if($this->getNombre()) : $a_Fields['alm_nombre'] = ($this->getNombre()); endif;
        if($this->getAlmacenRefId()) : $a_Fields['alm_almacenRefId'] = ($this->getAlmacenRefId()); endif;
        if($this->getDirecc1()) : $a_Fields['alm_direcc1'] = ($this->getDirecc1()); endif;
        if($this->getDirecc2()) : $a_Fields['alm_direcc2'] = ($this->getDirecc2()); endif;
        if($this->getCiudad()) : $a_Fields['alm_ciudad'] = ($this->getCiudad()); endif;
        if($this->getAlmEstado()) : $a_Fields['alm_almEstado'] = ($this->getAlmEstado()); endif;
        if($this->getParaVentaSw()) : $a_Fields['alm_venta'] = ($this->getParaVentaSw()); endif;
        if($this->getParaCompraSw()) : $a_Fields['alm_compra'] = ($this->getParaCompraSw()); endif;
        if($this->getEstado()) : $a_Fields['alm_estado'] = ($this->getEstado()); endif;
        if($this->getCreaUsr()) : $a_Fields['alm_creaUsr'] = ($this->getCreaUsr()); endif;
        if($this->getCreaFecha()) : $a_Fields['alm_creaFecha'] = ($this->getCreaFecha()); endif;
        if($this->getModifUsr()) : $a_Fields['alm_modifUsr'] = ($this->getModifUsr()); endif;
        if($this->getModifFecha()) : $a_Fields['alm_modifFecha'] = ($this->getModifFecha()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "UPDATE im_almacen SET ".$sStringField." WHERE 1 AND alm_almacenId='".$this->getAlmacenId()."';";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function delete()
  {
    try
    {
      if($this->getAlmacenId())
      {
        $a_Fields = array();

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "DELETE FROM im_almacen WHERE 1 AND alm_almacenId='".$this->getAlmacenId()."';"; 
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows($oLink);
        }
        else
        {
          throw new Exception( mysql_error($oLink) );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  /* B�squeda del registro por la llave primaria */
  public static function selectByPK($vAlmacenId)
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT alm_almacenId, alm_nombre, alm_almacenRefId, alm_direcc1, alm_direcc2, alm_ciudad, alm_almEstado, alm_venta, alm_compra, alm_estado, alm_creaUsr, alm_creaFecha, alm_modifUsr, alm_modifFecha FROM im_almacen WHERE 1 AND alm_almacenId='".$vAlmacenId."'; ";
        $result = mysql_query($sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;
      
      return $o_Propel?self::insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_ImAlmacenDP = new ImAlmacenBN();
    $o_ImAlmacenDP->setAlmacenId($o_propel->alm_almacenId);
    $o_ImAlmacenDP->setNombre($o_propel->alm_nombre);
    $o_ImAlmacenDP->setAlmacenRefId($o_propel->alm_almacenRefId);
    $o_ImAlmacenDP->setDirecc1($o_propel->alm_direcc1);
    $o_ImAlmacenDP->setDirecc2($o_propel->alm_direcc2);
    $o_ImAlmacenDP->setCiudad($o_propel->alm_ciudad);
    $o_ImAlmacenDP->setAlmEstado($o_propel->alm_almEstado);
    $o_ImAlmacenDP->setParaVentaSw($o_propel->alm_venta);
    $o_ImAlmacenDP->setParaCompraSw($o_propel->alm_compra);
    $o_ImAlmacenDP->setEstado($o_propel->alm_estado);
    $o_ImAlmacenDP->setCreaUsr($o_propel->alm_creaUsr);
    $o_ImAlmacenDP->setCreaFecha($o_propel->alm_creaFecha);
    $o_ImAlmacenDP->setModifUsr($o_propel->alm_modifUsr);
    $o_ImAlmacenDP->setModifFecha($o_propel->alm_modifFecha);
    return $o_ImAlmacenDP;
  }
}